/*
 * Powered By XY
 * Since 2020
 */

package com.xy.biz.fd.dao;
import java.util.Collection;
import java.util.List;
import java.util.Set;

import com.xy.biz.fd.domain.bo.RepositoryBO;
import com.xy.biz.fd.domain.po.RepositoryPO;
import com.xy.biz.fd.domain.query.RepositoryQuery;

/**
 *
 *
 * @author ssl
 * @date 2021-1-18
 */
public interface RepositoryDao {

	/**
	 * 保存
	 *
	 * @param repositoryPO
	 */
	int saveRepository(RepositoryPO repositoryPO);
	/**
	 *
	 */

	/**
	 * 更新
	 *
	 * @param repositoryPO
	 */
	int updateRepository(RepositoryPO repositoryPO);

	/**
	 * 删除
	 *
	 * @param repositoryPO
	 */
	int deleteRepository(RepositoryPO repositoryPO);

	/**
	 * 批量删除
	 *
	 * @param collection
	 */
	int deleteRepositoryByIds(Collection<Long> collection);

	/**
	 * 查找一个
	 *
	 * @param repositoryId
	 * @return
	 */
	RepositoryPO getRepository(Long repositoryId);

	/**
	 * 查找多条
	 *
	 * @param collection
	 * @return
	 */
	List<RepositoryPO> listRepositoryById(Collection<Long> collection);

	/**
	 * 条件查找多条
	 *
	 * @param query 查找条件
	 * @return
	 */
	List<RepositoryPO> listRepository(RepositoryQuery query);

	/**
	 * 条件统计个数
	 *
	 * @param query 查找条件
	 * @return
	 */
	int countRepository(RepositoryQuery query);

	/**
	 * 条件统计个数(非模糊查询)
	 *
	 * @param query 查找条件
	 * @return
	 */
	List<RepositoryPO> listRepositoryByName(RepositoryQuery query);

	/**
	 * 查找回收站
	 * @param query
	 * @return
	 */
	List<RepositoryPO> getRubbishRepository(RepositoryQuery query);

	/**
	 * 根据部门id列表获取知识库列表
	 * @param collect
	 * @return
	 */
    List<RepositoryPO> getUserGroupAndRepository(Set<Long> collect);

    /**
	 * 根据用户id获取知识库列表
	 * @param userId
	 * @return
	 */
    List<RepositoryPO> getRepositoryByUserId(Long userId);
	/**
	 * 根据归属Id查找多条
	 *
	 * @param repositoryPO 查找条件
	 * @return
	 */
	List<RepositoryPO> listRepositoryByBelongTo(RepositoryPO repositoryPO);
}
